﻿#pragma once

#include "BaseGraphicView.h"

#include <boost/signal.hpp>
#include "../../abstract/IApplicationView.h"
#include "../../../utils/gui/Button.h"
#include "../../../utils/gui/Form.h"
#include "../../../domain/models/CardSet.h"
#include "../../../domain/models/Player.h"
#include "../../helpers/graphic/application/GameEndDialog.h"
#include "../../helpers/graphic/application/GameModeDialog.h"

namespace Views {
	namespace Graphic {
		class ApplicationView: public IApplicationView, public BaseGraphicView
		{
			Helpers::Graphic::Application::GameEndDialog* game_end_dialog;
			Helpers::Graphic::Application::GameModeDialog* game_mode_dialog;
		public:
			ApplicationView(Utils::GUI::Form*);
			~ApplicationView();

			virtual void openGameModeDialog();
			virtual void gameLost(Players::Player*, Cards::CardSet&, Domain::Configuration::GAME_END_REASON);
			virtual void gameWon(Players::Player*, Cards::CardSet&, Domain::Configuration::GAME_END_REASON);
		protected:
			void onGameModePick(Domain::Configuration::GAME_MODE);
		};
	}
}

